# author: LiuShihao
# data: 2020/11/28 3:48 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 深拷贝与浅拷贝
class CPU:   # CPU类
    pass
class Disk:  # 硬盘类
    pass
class Computer: # 计算机类
    def __init__(self,cpu,disk):
        self.cpu = cpu
        self.disk = disk
# 变量的赋值
cpu1 = CPU()
cpu2 = cpu1
print(cpu1) # <__main__.CPU object at 0x10a502898>
print(cpu2) # <__main__.CPU object at 0x10a502898>
# cpu1与cpu2的内存地址相同   实际上是一个对象放到了两个变量中
# 类有浅拷贝
cpu = CPU()
disk = Disk()
computer = Computer(cpu,disk)

import copy
computer_copy = copy.copy(computer)  # 浅拷贝
print(computer,computer.disk,computer.cpu)
print(computer_copy,computer_copy.disk,computer_copy.cpu)
# 可以看到  两个computer对象不是一个对象，但是其中的子对象CUP和Disk类还是同一个对象
# 深拷贝
computer_copy2 = copy.deepcopy(computer)
print(computer,computer.disk,computer.cpu)# <__main__.Computer object at 0x109a2fe10> <__main__.Disk object at 0x1099dd1d0> <__main__.CPU object at 0x1099c2898>
print(computer_copy2,computer_copy2.disk,computer_copy2.cpu) #<__main__.Computer object at 0x109a3b198> <__main__.Disk object at 0x109acd198> <__main__.CPU object at 0x109ab4390>
# 看到无论computer还是拷贝的computer_copy2 还是他们的子对象都不是一个对象



